টাইম সিরিজ ডেটা প্রিপ্রসেসিং মডেল তৈরির একটি অত্যন্ত গুরুত্বপূর্ণ পদক্ষেপ, যেখানে টাইম সিরিজ ডেটা (যেমন স্টক মার্কেট ডেটা, আবহাওয়ার তথ্য, ইত্যাদি) বিভিন্ন ধাপের মাধ্যমে প্রস্তুত করা হয় যাতে এটি মডেল ট্রেনিংয়ের জন্য উপযুক্ত হয়। টাইম সিরিজ ডেটার সাথে কাজ করার সময় বিশেষ কিছু চ্যালেঞ্জ থাকে, যেমন ট্রেন্ড, মৌসুমিতা, এবং সিজনালিটি। সঠিক প্রিপ্রসেসিং মডেলকে আরও কার্যকর এবং নির্ভুল করে তোলে।
এখানে টাইম সিরিজ ডেটার জন্য কিছু সাধারণ প্রিপ্রসেসিং টেকনিক্স আলোচনা করা হলো:
টাইম সিরিজ ডেটা প্রিপ্রসেসিংয়ের প্রথম ধাপ হল সঠিকভাবে ডেটা লোড করা এবং টাইমস্ট্যাম্প সহ ডেটাটিকে সঠিক ফরম্যাটে রূপান্তরিত করা।
import pandas as pd
# ডেটা লোড করা
data = pd.read_csv('time_series_data.csv', parse_dates=['date'], index_col='date')
# টাইমস্ট্যাম্প ফরম্যাট যাচাই করা
print(data.head())
এখানে parse_dates
কলাম টাইমস্ট্যাম্প হিসাবে পার্স করা হচ্ছে এবং index_col
টাইমস্ট্যাম্প কলামকে ইনডেক্স হিসাবে সেট করা হচ্ছে।
টাইম সিরিজ ডেটাতে মিসিং ভ্যালু সাধারণত ঘটে থাকে। মিসিং ভ্যালু পূর্ণ করার বিভিন্ন পদ্ধতি রয়েছে, যেমন ফিল ফরওয়ার্ড (forward fill), ফিল ব্যাকওয়ার্ড (backward fill), বা ইন্টারপোলেশন।
# ফিল ফরওয়ার্ড মেথডে মিসিং ভ্যালু পূর্ণ করা
data.fillna(method='ffill', inplace=True)
# ইন্টারপোলেশন মেথড ব্যবহার
data.interpolate(method='linear', inplace=True)
টাইম সিরিজ ডেটাকে নিয়মিত সময়ে রিসাম্পল করা প্রয়োজন হতে পারে (যেমন, দৈনিক ডেটাকে সাপ্তাহিক বা মাসিক ডেটাতে রূপান্তরিত করা)। রিসাম্পলিংয়ের মাধ্যমে আপনি ডেটাকে উপযুক্ত সময় ফ্রেমে রূপান্তরিত করতে পারবেন।
# মাসিক গড় বের করা
monthly_data = data.resample('M').mean()
# সাপ্তাহিক গড় বের করা
weekly_data = data.resample('W').mean()
এখানে resample('M')
মাসিক রিসাম্পলিং এবং mean()
গড় বের করার জন্য ব্যবহৃত হচ্ছে।
টাইম সিরিজ ডেটাতে অনেক সময় একটি স্পষ্ট ট্রেন্ড বা সিজনালিটি দেখা দেয়। ট্রেন্ড এবং সিজনালিটি মডেল ট্রেনিংয়ের জন্য অপ্রয়োজনীয় হতে পারে, তাই এগুলো সরিয়ে ফেলা উচিত।
# ডিফারেন্সিং ব্যবহার করা
data_diff = data.diff().dropna()
# সিজনালিটি সরানোর জন্য লোগ রিপ্রেজেন্টেশন
data_log = np.log(data)
টাইম সিরিজ ডেটা অনেক সময় বড় ভ্যারিয়েশন সহ থাকে। মডেল প্রশিক্ষণের জন্য ডেটাকে স্কেল করা খুবই গুরুত্বপূর্ণ, কারণ ডিপ লার্নিং মডেল সাধারণত স্কেলড ডেটায় ভালো কাজ করে।
from sklearn.preprocessing import MinMaxScaler
# MinMax স্কেলিং
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
# Standardization (Z-score Normalization)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
টাইম সিরিজ ডেটা স্টেশনারি হওয়া উচিত, অর্থাৎ, ডেটার গড় এবং ভ্যারিয়েন্স সময়ের সাথে পরিবর্তন করা উচিত নয়। স্টেশনারিটি চেকের জন্য Augmented Dickey-Fuller (ADF) টেস্ট ব্যবহার করা হয়।
from statsmodels.tsa.stattools import adfuller
# ADF টেস্টের মাধ্যমে স্টেশনারিটি চেক করা
result = adfuller(data['column_name'])
print('ADF Statistic:', result[0])
print('p-value:', result[1])
টাইম সিরিজ ডেটার জন্য ফিচার ইঞ্জিনিয়ারিং অপরিহার্য, যেখানে আপনি নতুন ফিচার তৈরি করতে পারেন, যেমন সময়ের সিজনাল উপাদান বা অতীতের মান ব্যবহার করে ভবিষ্যতের পূর্বাভাস।
# সিজনাল ফিচার তৈরি
data['month'] = data.index.month
data['day_of_week'] = data.index.dayofweek
data['quarter'] = data.index.quarter
# পূর্ববর্তী মান থেকে ফিচার তৈরি
data['lag_1'] = data['column_name'].shift(1)
data['lag_2'] = data['column_name'].shift(2)
কিছু পরিস্থিতিতে আরো অ্যাডভান্সড প্রিপ্রসেসিং মেথড ব্যবহৃত হতে পারে, যেমন:
টাইম সিরিজ ডেটা প্রিপ্রসেসিং গুরুত্বপূর্ণ পদক্ষেপ যা ডেটার গুণগত মান উন্নত করতে সাহায্য করে। ডেটা লোডিং, মিসিং ভ্যালু ফিলিং, রিসাম্পলিং, ট্রেন্ড এবং সিজনালিটি রিমুভাল, স্কেলিং এবং স্টেশনারিটি চেকিং সহ বিভিন্ন প্রিপ্রসেসিং পদ্ধতি মডেলটির পারফরম্যান্স উন্নত করতে সহায়ক। সঠিক প্রিপ্রসেসিং মডেলকে আরও কার্যকরী এবং নির্ভুল করে তোলে।
Read more